iT邦幫忙

2025 iThome 鐵人賽

DAY 25
1
生成式 AI

可愛又迷人的提示詞工程 Prompt Engineering系列 第 25

Day25. 用邊界與約束設計避免上下文幻覺

  • 分享至 

  • xImage
  •  

AI 模型最迷人的特性之一就是強大的自我延伸能力。然而,這項特性如同一把雙面刃,也帶來了最危險的副作用,就是模型會自行想像、補充細節,甚至在資訊不足時,創造出看似合理卻全然虛構的回答。這就是我們所熟知的幻覺

從上下文工程的角度來看,幻覺是語言模型的缺陷,我們需要透過系統化方法管理的這個邊界管理問題。要讓模型不憑空捏造,靠的不是運氣,而是清晰的範圍控制與嚴謹的約束設計。

AI 為什麼會自說自話

AI 產生幻覺的根本原因在於它被迫連接了斷裂的上下文

語言模型的本質是一個統計預測機器,其核心任務是根據已有的文字序列,預測下一個最有可能出現的詞彙。當它在給定的上下文中找不到足夠的資訊來形成連貫的回應時,其內建的補完偏誤機制便會啟動

簡單來說,模型的天性讓他寧願亂說,也不願意什麼都不說

例如我們詢問台灣第一個 AI 法規是什麼?AI 可能會回應你頒布的時間跟法規內容,給你一個看起來非常專業的回答,但問題是,台灣至今從未有過這個法規

但模型並非故意欺騙,而是它在龐大的訓練資料中,學習到了國家名稱 + AI 法規這樣的語言組合模式。基於統計機率,它生成了一個最像樣的答案。在多輪對話或需要整合多個資訊來源 (例如 RAG) 的場景中,這種幻覺更容易發生,因為模型會極力嘗試讓故事聽起來合理,即便資料來源之間存在矛盾。

這也凸顯了上下文工程的核心價值之一:精準地控制模型能看見什麼與不能踰越的界線。

如何用上下文框定範圍

如果將 AI 模型比喻為一名演員,那麼上下文就是他手中的劇本。沒有劇本的演員,只能依靠即興發揮來填補空白。因此,第一個關鍵策略,就是在提示詞與上下文中,為模型明確地框定出表演的舞台。

框出資訊來源

明確告知模型,它的世界僅限於你所提供的資料。這能有效阻止它引用其龐大訓練資料中的外部知識

你僅能根據以下資料回答問題:

- [文件 A]: 公司最新一季的財報摘要
- [文件 B]: 年度市場競爭對手分析報告
- [文件 C]: 來自新聞 API 的即時數據

框出任務範圍

除了限制資料來源,也要對模型的行為進行約束

任務:請根據上述資料回答客戶提出的問題
限制:若資料中並未提及相關答案,請直接回覆根據所提供的資料,目前無法找到相關資訊

這種顯式指令會引導模型在生成回答時,採取一種更為保守的策略,從而大幅降低產生幻覺的風險

框出語氣與角色

在需要多個 AI 代理協同工作的複雜場景中,角色框架尤其重要。它能避免模型因人格混亂而產生不穩定的輸出

角色:你是一位客觀的財報分析師,不是行銷部門的業務人員
語氣:你的回答應該是中立且基於數據的,避免任何推銷或帶有情感色彩的語氣

使用顯式邊界 (Do / Don’t) 提升穩定性

顯式邊界是最實用的一種方法。我們可以將 AI 模型視為程式語言中的一個函式,並為其明確定義輸入與輸出的契約,透過允許清單禁止清單,我們可以建立一道堅固的防撞欄

Do (明確允許的行為)

  • 僅根據提供的上下文進行回答
  • 在回覆內容中,明確標示每一個資訊的引用來源標籤
  • 若在資料來源中發現內容矛盾,請明確指出並解釋

Don’t (明確禁止的行為)

  • 不得引入任何外部知識或進行假設性推論
  • 不得生成虛構的文件、數據、法條名稱或人名
  • 避免使用「根據我所知」、「一般來說」或「通常認為」等模糊不清的語句

以下是一個防止幻覺的提示詞結構:

你是一位資料分析助理。請根據以下上下文回答問題:

上下文:

- [來源 A]: 2024 年第四季市場報告摘要
- [來源 B]: 最新一期的客戶滿意度調查結果

請嚴格遵守以下規則:

Do:

- 只能使用來源 A 與來源 B 的內容來回答
- 若資料不足以回答問題,請回覆「資訊不足,無法回答」
- 引用內容時,務必附上對應的來源標籤,例如 (來源 A)

Don’t:

- 禁止使用你內部訓練資料庫中的任何知識
- 禁止推測或估算任何未在資料中明確提及的數據
- 禁止編造任何公司、報告或產品的名稱

這種明確框定的提示詞,相當於為模型建立了一個安全沙盒 (Sandbox),確保其所有行為都在預期的範圍內

邊界驗證與防錯迴圈

僅僅設計邊界,並不代表能完全信任模型會百分之百遵守。我們還需要建立後續的驗證機制,形成一個完整的閉環

自我檢查

在模型生成回答後,可以立即要求它進行自我審查,檢查是否違反了邊界設定

請檢查你上方的回答,是否完全只使用了我所提供的資料來源?若有任何推測、外部知識或未標註來源的資訊,請逐一列出

第二模型交叉檢查

在對準確性要求極高的領域 (如法律、醫療或金融),可以引入另一個獨立的語言模型來審核第一個模型的輸出。這種做法可以顯著降低單一模型產生幻覺的機率

邊界強化迴圈

更進階的系統會建立一個回饋機制。它會自動記錄模型違反規則的模式 (例如,經常亂補充年份、虛構人名),並將這些模式動態地更新到下一輪提示詞的 Don’t 列表中,形成一個持續進化的防幻覺迴路

提示詞設計範例

在主要任務開始前,先設定好基本規則:

請勿回答任何未在下方上下文中出現的資訊。若你不確定答案,請明確回覆「我沒有足夠的資料可以回答此問題」、

再驗證 AI 生成的內容:

請檢查你剛剛生成的回答,是否完全基於我所提供的上下文。若有任何一句話包含了外部知識,請將其標示出來

最後將這些規則內建到模型的底層行為準則中,使其成為預設的行為模式:

你的核心行為準則:

- 僅回答有明確資料來源支撐的內容。
- 若不同來源之間存在矛盾,請明確指出差異,不可自行推斷或選擇性呈現。
- 若使用者提出的問題超出所提供上下文的範圍,必須回覆「此問題已超出目前資料範圍」。

小結

幻覺問題或許永遠無法被完全消除,但可以被工程化地管理。

我們追求的目標,不是讓 AI 成為一個永遠正確的全知全能者,而是要訓練它在面對不確定性時,能夠保持誠實。這正是邊界與約束設計的真正價值所在,讓模型理解自己的局限性,明確知道哪些能說、哪些不能說


上一篇
Day24. 管理與壓縮歷史對話
下一篇
Day26. 上下文工程在多模態 AI 的應用
系列文
可愛又迷人的提示詞工程 Prompt Engineering26
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言